In recent years, every effort has been made to develop solid-state drives (SSDs) using, as a data storage device, a NAND flash memory (hereinafter simply referred to as a flash memory) that is a rewritable nonvolatile memory.
The SSD consecutively receives sector unit data from a host, prepares page unit data in a buffer, and then writes the page unit data to a flash memory. Each sector unit data is managed by a logical address referred to as a logical block address (LBA). Each page unit data is, for example, one cluster unit data comprising 8 sectors. The page is hereinafter referred to as the cluster.
The SSD involves a scheme for supporting a skip write command (SWC) from the host. The SWC is a command indicating a write of data only with valid LBAs (valid data). According to this scheme, valid LBAs are specified for the SSD using a skip table transferred together with the SWC from the host. That is, the SSD skips LBAs other than valid LBAs specified in the skip table, and stores data only with the valid LBAs in the buffer. The SSD stores the cluster unit data and then writes the data to a flash memory.
Here, the SSD may prepare cluster unit data in the buffer by combining new data only with valid LBAs from the host with old data read from the flash memory. That is, in the existing cluster unit data recorded in the flash memory, the new data specified as the valid LBAs are replaced. In this case, an efficient and reliable method is required for a process of arranging the data only with the valid LBAs into the buffer and writing the cluster unit data to the flash memory.